#ifndef _LED_MANAGER_H_
#define _LED_MANAGER_H_

#include "stm32f1xx.h"
#include "cot_led.h"

/* 引脚定义 */
#define LED0_GPIO_PORT                  GPIOC
#define LED0_GPIO_PIN                   GPIO_PIN_10
#define LED0_GPIO_CLK_ENABLE()          do{ __HAL_RCC_GPIOC_CLK_ENABLE(); }while(0)             /* PC口时钟使能 */

#define LED1_GPIO_PORT                  GPIOC
#define LED1_GPIO_PIN                   GPIO_PIN_11
#define LED1_GPIO_CLK_ENABLE()          do{ __HAL_RCC_GPIOC_CLK_ENABLE(); }while(0)             /* PC口时钟使能 */

#define LED2_GPIO_PORT                  GPIOC
#define LED2_GPIO_PIN                   GPIO_PIN_12
#define LED2_GPIO_CLK_ENABLE()          do{ __HAL_RCC_GPIOC_CLK_ENABLE(); }while(0)             /* PC口时钟使能 */

/* LED控制宏定义 - 设置指定状态(低电平点亮) */
#define LED0(x)   do{ x ? \
                      HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0_GPIO_PIN, GPIO_PIN_SET) : \
                      HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0_GPIO_PIN, GPIO_PIN_RESET); \
                  }while(0)      /* LED0控制，x=1熄灭，x=0点亮 */

#define LED1(x)   do{ x ? \
                      HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_GPIO_PIN, GPIO_PIN_SET) : \
                      HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_GPIO_PIN, GPIO_PIN_RESET); \
                  }while(0)      /* LED1控制，x=1熄灭，x=0点亮 */

#define LED2(x)   do{ x ? \
                      HAL_GPIO_WritePin(LED2_GPIO_PORT, LED2_GPIO_PIN, GPIO_PIN_SET) : \
                      HAL_GPIO_WritePin(LED2_GPIO_PORT, LED2_GPIO_PIN, GPIO_PIN_RESET); \
                  }while(0)      /* LED2控制，x=1熄灭，x=0点亮 */

/* LED控制宏定义 - 状态翻转 */
#define LED0_TOGGLE()   do{ HAL_GPIO_TogglePin(LED0_GPIO_PORT, LED0_GPIO_PIN); }while(0)        /* 翻转LED0状态 */
#define LED1_TOGGLE()   do{ HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_GPIO_PIN); }while(0)        /* 翻转LED1状态 */
#define LED2_TOGGLE()   do{ HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2_GPIO_PIN); }while(0)        /* 翻转LED2状态 */

/* LED标识枚举 */
typedef enum
{
    LED_0 = 0,
    LED_1,
    LED_2,

    /* 勿删除,用来统计LED的数目 */
    LED_MAX_NUM
} LedType_e;

/* LED外部接口函数*/
void FML_LED_Init(void);  /* LED模块初始化 */

#endif
